package servicios;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import utils.*;

import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;

import negocio.PersonaDAO;
import modelo.*;


@Path("personas")
public class RestService {
	@Inject
	private EntityManager em;
	
	@Inject
	private PersonaDAO pDao;
	@GET
	@Path("persona")
	@PathParam("")
	@Produces({"aplications/json"})
	@Consumes("aplication/json")
	public List<MensajeRespuesta> Persona(Persona p){
		
		MensajeRespuesta msj=new MensajeRespuesta();
		msj.setCodigo(1);
		msj.setPersona(p);
		msj.setMensaje("json");
		
		return Persona(p);
		
	}
	@GET
	@Path("persona/{datos}/{datos2}")
	@Produces({"aplications/json"})
	@Consumes("aplication/json")
	public List<MensajeRespuesta> fecha11(@PathParam("datos") String variable,
										@PathParam("datos2") String variable2, 
										@QueryParam("edad") String ed, 
										@QueryParam("nombre") String nombre ){
		Date fecha=new Date();
		List<MensajeRespuesta>lista=new ArrayList<MensajeRespuesta>();
		
		MensajeRespuesta msj=new MensajeRespuesta();
		msj.setCodigo(1);
		msj.setFecha(fecha);
		msj.setMensaje(nombre+variable+variable2);
		
		MensajeRespuesta msj1=new MensajeRespuesta();
		msj1.setCodigo(1);
		msj1.setFecha(fecha);
		msj1.setMensaje("json");
		
		lista.add(msj);
		lista.add(msj1);
		return lista;
		
	}
	
	/*@GET @Path(value = "dato") 
	@Produces("application/json") 
	public List<Persona> dato(Persona per, 
			@QueryParam("tipo")String tipo){ String sql = "SELECT p From Persona p WHERE p.tipoCuenta = :tipo"; 
			Query q = em.createQuery(sql, Persona.class); 
			q.setParameter("tipo", tipo); 
			List<Persona> lista = q.getResultList(); return lista; } 
	@GET 
	@Path(value = "datos") 
	@Produces("application/json") 
	public List<Persona> datos(Persona persona){ String sql = "SELECT c From Cuenta c "; 
	Query q = em.createQuery(sql, Persona.class); 
	List<Persona> lista = q.getResultList(); 
	return lista; 
	}
	*/
//este si

@GET 
@Path(value = "dato")
@Produces("application/json") 
public List<Persona> dato(Persona persona, @QueryParam("cedula")String cedula){ 
		String sql = "SELECT p From Persona p WHERE p.cedula = :cedula"; 
		Query q = em.createQuery(sql, Persona.class); 
		q.setParameter("cedula", cedula); 
		List<Persona> lista = q.getResultList(); 
		return lista; 
		} 

@GET
@Path(value = "datos") 
@Produces("application/json") 
public List<Persona> datos(Persona persona){ 
	String sql = "SELECT p From Persona p "; 
	Query q = em.createQuery(sql, Persona.class); 
	List<Persona> lista = q.getResultList(); 
	return lista; 
	}

@GET 
@Path(value = "dato")
@Produces("application/json") 
public List<Persona> dato1(Persona persona, @QueryParam("cedula")String cedula){ 
		String sql = "SELECT p From Persona p WHERE p.cedula = :cedula"; 
		Query q = em.createQuery(sql, Persona.class); 
		q.setParameter("cedula", cedula); 
		List<Persona> lista = q.getResultList(); 
		return lista; 
		} 

@POST
@Path(value = "insertarPersona")
@Produces("application/json")
@Consumes("application/json")
public MensajeRespuesta insertPersona(Persona persona){
	MensajeRespuesta respuesta=new MensajeRespuesta();
	respuesta.setFecha(new Date());
	try{
		System.out.println("Cedula"+persona.getCedula());
		pDao.insert(persona);
		respuesta.setCodigo(0);
		respuesta.setMensaje("ok");
	}catch(Exception e){
		respuesta.setCodigo(1);
		respuesta.setMensaje("no");
	}
	return respuesta;
	
}
}
